{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "- 损失函数：\n",
    "$$\n",
    "L=\\frac{1}{N} \\sum_i L_i(f(x_i,W),y_i)\n",
    "$$\n",
    "- 单样本的多类支持向量机损失：\n",
    "$$\n",
    "L_i=\\sum_{j \\neq y_i}\\max\\left(0, s_{ij}-s_{y_i}+1\\right)\n",
    "$$\n",
    "- 线性分类器\n",
    "$$\n",
    "S_{ij}=W_j^Tx_i+b_j\n",
    "$$\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "### **回答以下问题：<br>**\n",
    "#### **1:多类支撑向量机损失 $L_i$ 的最大/最小值会是多少?**\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "- 答:单样本的多类支持向量机损失：$L_i=\\sum_{j \\neq y_i}\\max\\left(0, s_{ij}-s_{y_i}+1\\right)$\n",
    "<br>由公式可知，当$s_{ij}-s_{y_i}+1$小于0时，$\\max\\left(0, s_{ij}-s_{y_i}+1\\right)$表示没有损失，则$\\max\\left(0, s_{ij}-s_{y_i}+1\\right)$会输出0，所以$L_i$的最小值为0。当$s_{ij}-s_{y_i}+1$大于0时，其损失值可能很大，所以$L_i$的最大值是无穷大。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "#### **2:如果初始化时 w 和 b 很小,损失 L 会是多少?**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "- 答:单样本的多类支持向量机损失：$L_i=\\sum_{j \\neq y_i}\\max\\left(0, s_{ij}-s_{y_i}+1\\right)$<br>线性分类器:$S_{ij}=W_j^Tx_i+b_j$<br>\n",
    "假设初始化时 w 和 b 都趋近于零，则 $s_{ij}$ 和 $s_{y_i}$ 都会趋近于零，所以 $s_{ij}-s_{y_i}+1$ 会趋近于1，$\\max\\left(0, s_{ij}-s_{y_i}+1\\right)$ 会输出1，所以 $L_i$ 会趋近于类别数减1。假设现在类别数是10，则 $L_i$ 会趋近于9。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "#### **3:考虑所有类别(包括 $j=y_{i}$ ),损失 $L_{i}$ 会有什么变化?**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "- 答：若考虑$j=y_{i}$,则$L_i=\\sum_{j \\neq y_i}\\max\\left(0, s_{ij}-s_{y_i}+1\\right)$会多出来一种情况，那就是自己跟自己相减，所以$L_i$会多出来一个1，但对整个损失和性能的影响不大，在现实中考虑这种情况无实际意义。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "#### **4:在总损失 L 计算时,如果用求和代替平均?**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "- 答：由损失函数：$L=\\frac{1}{N} \\sum_i L_i(f(x_i,W),y_i)$可知，如果用求和代替平均，则损失函数变为：$L=\\sum_1 L_i(f(x_i,W),y_i)$，这样会导致损失函数变大n倍。但是对我们选出最小损失函数没有影响，因为大家都放大了同样的倍数，所以最终选出的损失函数还是最小的。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "#### **5:如果使用 $L_i=\\sum_{j \\neq y_i}\\max\\left(0, s_j-s_{y_i}+1\\right)^2$**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "- 答：若使用$L_i=\\sum_{j \\neq y_i}\\max\\left(0, s_j-s_{y_i}+1\\right)^2$,其影响分类器的性能。比如现在分类器的损失是100，使用$L_i=\\sum_{j \\neq y_i}\\max\\left(0, s_j-s_{y_i}+1\\right)^2$后，损失变为10000；若现在分类器的性能是0.01，使用$L_i=\\sum_{j \\neq y_i}\\max\\left(0, s_j-s_{y_i}+1\\right)^2$后，损失变为0.0001。所以$L_i=\\sum_{j \\neq y_i}\\max\\left(0, s_j-s_{y_i}+1\\right)^2$和$L_i=\\sum_{j \\neq y_i}\\max\\left(0, s_j-s_{y_i}+1\\right)$优化出来的结果可能是不一样的。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": []
  }
 ],
 "metadata": {
  "language_info": {
   "name": "python"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
